// 引入第三方包  express
var express=require('express')
// 实例化express
var app = express()
// 设置静资源托管文件
app.use(express.static('static'))
app.use(express.json())

app.use(express.urlencoded({ extended: false }))
//设置token验证的中间件
app.use(expressjwt({
    secret: '1234',
    algorithms: ['HS256']
}).unless({ path: ['/user/login', '/user/register'] }))

var fs = require('fs')
var path = require('path')
var jwt = require('jsonwebtoken')
console.log(jwt);
// 设置接口 
//分页（查询）
app.get('/user/list', (req, res) => {
    var { page, count } = req.query
    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, './json/users.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []
    //分页
    var newarr = arr.slice((page - 1) * count, page * count)

    res.send({ code: 200, msg: '请求成功', list: newarr })
})
// 登录
app.post('/user/login', (req, res) => {
    
    var { phone, pass } = req.body
    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, './json/users.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    var i = arr.findIndex((item) => {
        return item.phone == phone && item.pass == pass
    })
    if (i != -1) {
        var token = jwt.sign({ phone }, "1234", { algorithm: 'HS256',expiresIn: 60})

        res.send({ code: 200, msg: '登陆成功', userinfo: arr[i], token })
    } else {
        res.send({ code: 400, msg: '登陆失败' })
    }
})
// 注册
app.post('/user/register', (req, res) => {
    var { phone } = req.body
    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, './json/users.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    var i = arr.findIndex((item) => {
        return item.phone == phone
    })
    if (i != -1) {
        res.send({ code: 400, msg: '该手机号已注册' })
    } else {
        arr.push({ ...req.body, ingroup: '开发组', isadmin: true, state: true })
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf8')
        res.send({ code: 200, msg: '注册成功' })
    }
})
// 删除
app.post('/user/delete', (req, res) => {
    var { phone } = req.body
    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, './json/users.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    var i = arr.findIndex((item) => {
        return item.phone == phone
    })
    if (i != -1) {
        arr.splice(i, 1);
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf8')
        var newarr = arr.slice(0, 3)
        res.send({ code: 200, msg: '删除成功', list: newarr })
    } else {
        res.send({ code: 200, msg: '删除失败' })
    }
})
// 设置监听
app.listen(8080,()=>{
    console.log('服务器运行在:http://localhost:8080');
})